/*
题目链接：https://leetcode.cn/problems/find-the-smallest-divisor-given-a-threshold/description/
1283. 使结果不超过阈值的最小除数-中等
完成日期：2024/9/24
二分搜索
*/
class Solution {
public:
    int smallestDivisor(vector<int>& nums, int threshold) {
        int l=1,r=*max_element(nums.begin(),nums.end());
        int ans=0;
        while(l<=r){
            int mid=(l+r)/2;
            int sum=0;
            for(int m:nums){
                sum+=(m-1)/mid+1;
            }
            if(sum<=threshold){
                ans=mid;
                r=mid-1;
            }else{
                l=mid+1;
            }
        }
        return ans;
    }
};